The subject technology relates generally to data synchronization, and more particularly to data synchronization between a database system and its occasionally connected client applications.
Database systems are widely used to hold data and provide support to various operations in business environments such as management of organizations, and interactions with customers and suppliers. User computing devices, including laptop computers, desktop computers, mobile phones, smart phones, tablet computers and personal digital assistants (PDAs), may connect to database systems via a network, and client applications on user computing devices may communicate data with database systems, or server systems. Data communications between client applications and database systems typically include retrieving data, updating data, and deleting data.
Oftentimes, a client database may be maintained on a user computing device to support operation of a client application, especially when the user computing device is offline, and synchronized with the database system regularly, when the user computing device joins the network again, and/or when the user requests for synchronization. The client database may store a subset of data from the database system which may be needed to support the client application's operation, and is especially important for mobile computing devices whose connections with the database system are potentially intermittent or unreliable.
FIG. 1 illustrates a prior art synchronization process. As shown, the synchronization may start at 101. At 102, it is determined if a user is logged into a client application and if his/her computing device is authenticated. If not, the process may return to 101. Otherwise, at 103, it is determined if it is time for synchronization. And if yes, the synchronization may be performed at 104 and the process may then return to 101.
Since users want ubiquitous access to applications and data, and want the data to be as correct and up to date as possible, it is desirable to provide a method and system which can quickly synchronize data between a database system and its client applications without overburdening user computing devices.